﻿

#include "zyHotkeyBox.h"


DarkMoonUI::zyHotkeyBox::zyHotkeyBox()
{
	SetMember(L"this", (LONG_PTR)this);
	m_obj->setChildWndProc(zyHotkeyBox_ChildWndProc);
}
DarkMoonUI::zyHotkeyBox::~zyHotkeyBox()
{

}

LRESULT WINAPI DarkMoonUI::zyHotkeyBox::zyHotkeyBox_ChildWndProc(zyObject* obj, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, BOOL* bHandle)
{
	if (message == WM_COMMAND) {
		short id = LOWORD(wParam);
		int code = HIWORD(wParam);
		if (code == EN_CHANGE) {
			TRegEvent* evtPtr = (TRegEvent*)obj->getRegEvent(L"OnChange");
			if (evtPtr != nullptr) {
				evtPtr->handler<int>(lParam, id);
			}
		}
	}
	return zyCtrol::zyCtrol_ChildWndProc(obj, hWnd, message, wParam, lParam, bHandle);
}
BOOL DarkMoonUI::zyHotkeyBox::创建(HWND 参数_父窗口, const std::wstring& 参数_标题, POINT 参数_位置, POINT 参数_尺寸, int 参数_ID, int 参数_窗口风格, int 参数_扩展风格)
{
	if (参数_ID == NULL)
		参数_ID = 黑月默认ID();
	if (参数_窗口风格 == 0)
		参数_扩展风格 = WS_EX_CLIENTEDGE;
	return _CreateCtrol(参数_父窗口, 参数_标题, 参数_位置, 参数_尺寸, 参数_ID, 参数_窗口风格 | WS_TABSTOP, 参数_扩展风格, L"msctls_hotkey32");
}

BOOL DarkMoonUI::zyHotkeyBox::创建(zyWindow& 参数_父窗口, const std::wstring& 参数_标题, POINT 参数_位置, POINT 参数_尺寸, int 参数_ID, int 参数_窗口风格, int 参数_扩展风格)
{
	if (参数_ID == NULL)
		参数_ID = 黑月默认ID();
	if (参数_窗口风格 == 0)
		参数_扩展风格 = WS_EX_CLIENTEDGE;
	return _CreateCtrol(参数_父窗口.getHwnd(), 参数_标题, 参数_位置, 参数_尺寸, 参数_ID, 参数_窗口风格 | WS_TABSTOP, 参数_扩展风格, L"msctls_hotkey32");
}
DarkMoonUI::黑月热键信息 DarkMoonUI::zyHotkeyBox::取热键() {
	黑月热键信息 局部_热键信息 = { 0 };
	short 局部_返回值 = LOWORD(sendMsg(HKM_GETHOTKEY, 0, 0));
	局部_热键信息.键代码 = LOBYTE(局部_返回值);
	局部_热键信息.功能键 = HIBYTE(局部_返回值);
	return 局部_热键信息;
}
void DarkMoonUI::zyHotkeyBox::置热键(黑月热键信息& 参数_热键信息) {
	sendMsg(HKM_SETHOTKEY, MAKEWPARAM(参数_热键信息.键代码, 参数_热键信息.功能键), 0);
}
void DarkMoonUI::zyHotkeyBox::置规则(int 参数_规则, int 参数_替换功能键) {//如果按下的功能键为"参数_规则"的功能键，则替换为 "参数_替换功能键"的功能键
	sendMsg(HKM_SETRULES, 参数_规则, 参数_替换功能键);
}